package com.shujia.spark

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo10Sort {
  def main(args: Array[String]): Unit = {

    /**
      * map  传入一行返回一行
      *
      */
    //创建sparkp配置文件对象
    val conf = new SparkConf().setAppName("map").setMaster("local")

    //上下文对象
    val sc = new SparkContext(conf)

    val rdd = sc.parallelize(List((23, "张三"), (34, "李四"), (23, "王五"), (12, "晓伟")))

    /**
      * sortBy  指定排序的列  默认升序
      * sortByKey  按照key进行排序   只有kv的rdd才有
      */

    rdd
      .sortBy(kv => kv._1, ascending = false)
      .foreach(println)


    rdd.sortByKey().foreach(println)


    /**
      * count  action算子   同rdd的行数
      *
      */
    val count = rdd.count()

    println(count)


    /**
      * distinct   对数据进行去重
      *
      */

    val rdd1 = rdd.distinct()


    /**
      * collect  返回一个scala的数组
      * 如果rdd数据量很大会导致内存溢出
      *
      * collectAsMap  返回一个map集合  只有kv格式的rdd才可以使用
      *
      */

    val arr: Array[(Int, String)] = rdd.collect()
    val map: collection.Map[Int, String] = rdd.collectAsMap()


  }
}

